iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
DevOps

從零開始的Kubernetes轉換系列 第 10

Day 10 使用 sops 和 KMS 來加密我們的 secret

  • 分享至 

  • xImage
  •  

上一篇我們提到如何讓GKE用KMS來加密這樣可以使我們的資料更安全,但是如果我們今天要讓secret.yaml放上去到git, base64的資料是可以隨時被decrypt的。

因此我們今天使用sops一套mozilla開發的工具來加密我們的secret

首先我們寫一個secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: sample
type: Opaque
data:
  extra: YmFyCg==

extra的部分是我們經由base64 encode姐出來是

echo "YmFyCg==" | base64 -d
bar

那接下來先安裝我們的sops 官網連結https://github.com/mozilla/sops
大家可到stable release抓下來安裝,安裝好以後

我們先找到昨天的kms key位置並且export成KSM_PATH

gcloud kms keys list --location <region> --keyring <key ring name>
projects/<project>/locations/region/keyRings/<key ring name>/cryptoKeys/<key name>
export KMS_PATH="projects/<project/locations/asia-east1/keyRings/<key ring name>/cryptoKeys/<key>"

然後我們就可以用KMS和sops來加密我們的secret.yaml啦

sops --encrypt --gcp-kms $KMS_PATH secret.yaml > secret.enc.yaml

我們會得到一個全文加密的secret.enc.yaml
要解密的話呢

sops --decrypt --gcp-kms $KMS_PATH secret.enc.yaml

如果只想要加密部分欄位我們也可以透過regular expression的部分來做

sops --encrypt --encrypted-regex '^(extra)$' --gcp-kms $KMS_PATH secret.yaml > secret_partial.enc.yaml
cat secret_partial.enc.yaml
apiVersion: v1
kind: Secret
metadata:
    name: sample
type: Opaque
data:
    extra: ENC[AES256_GCM,data:ZdIrxKINFeQ=,iv:bFEgGrUolwScM7tLYKv8HrXp0RqYS2W9PxFKEbbt6SQ=,tag:mbUN3m4onfzze+upyPFOpA==,type:str]

這樣我們就可以安心的把secret放在git上啦。不過大家還是要記得key還是要記得rotate。


上一篇
Day 9 使用 KMS 來幫 GKE 的 secret 加密
下一篇
Day 11 架設 argo cd
系列文
從零開始的Kubernetes轉換30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言